package com.ceair.flight.refund.location.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author youguilin
 */
public class RefundApplyDO implements Serializable {

    private static final long serialVersionUID = -233499719788112879L;
    /**
     * 退票申请id
     */
    private long id;

    private List<Long> ids;
    /**
     * 版本
     */
    private int version;
    /**
     * 退票申请人id
     */
    private String claimerId;
    /**
     * 退票申请人姓名
     */
    private String claimerName;
    /**
     * 退票申请人类型
     */
    private String claimerType;
    /**
     * 退票申请人电话
     */
    private String claimerPhone;
    /**
     * 退票申请人邮箱
     */
    private String claimerEmail;
    /**
     * 订单创建时联系人电话
     */
    private String contactPhone;
    /**
     * 订单创建时是联系人邮箱
     */
    private String contactEmail;
    /**
     * 退票申请日期
     */
    private Date creatDate;
    /**
     * 用于判断航前,航后间隔, 正常情况下应该是申请退票日期时间;如果PNR先于退票日期被取消, 应该是PNR取消的日期时间(均为飞机始发的当地时间)
     */
    private Date pnrCancelDate;
    /**
     * 记录更新日期时间
     */
    private Date updatDate;
    /**
     * 申请来源地址(IP, ...)
     */
    private String claimSource;
    /**
     * 申请记录来源渠道(退票申请可以来自不同于出票渠道)
     */
    private String channelNo;
    /**
     * 申请类型(0:非自愿; 1:自愿)
     */
    private int isVoluntary;
    /**
     * 选择 航線變更；行程取消；非正常運航；個人原因：行程變更；乘坐其他航空公司；本人及家人死亡；個人事由；其它原因：支付重複；東航官網重新預定/出票；其他）
     */
    private String claimReason;
    /**
     * 申请理由(用户输入)
     */
    private String claimDesc;
    /**
     * 状态(等待审核(等待一审),等待用户更新,一审异常,等待二审,等待重新审核,退票单异常,,等待退款,退款成功,退款异常)
     */
    private String status;

    private String[] statuses;

    private String statusName;
    /**
     * 操作提示(当退票申请处于异常状态下时,下一步应该进行的操作)
     */
    private String actionTip;
    /**
     * 应退金额(含税, 手续费已减)
     */
    private BigDecimal refundAmount;
    /**
     * 货币类型(订单信息中货币三字码)
     */
    private String currency;
    /**
     * 总手续费(所有航段上的手续费之和)
     */
    private BigDecimal refundFee;
    private Long refundPoints;
    private String pointsType;

    private String channel;

    //    private String payAmount;
    private String payChannel;

//    /**
//     * 退票支付DTO
//     */
//    private Set<RefundPayDto> refundPays = new HashSet<>(0);
//    /**
//     * 退票记录DTO
//     */
//    private Set<RefundLogDto> refundLogs = new HashSet<>(0);
//    /**
//     * 退票附件DTO
//     */
//    private Set<RefundAttachmentDto> refundAttachments = new HashSet<>(0);
    /**
     * 退票表
     */
    private RefundTktDO refundTkt = new RefundTktDO();
//    /**
//     * 退票审核DTO
//     */
//    private Set<RefundAuditDto> refundAudits = new HashSet<>(0);
    /**
     * 申请单是否执行过自动一审, 0:未执行过, 1:已执行并通过 2: 已执行但未通过
     */
    private int autoFirstAudit;
    /**
     * 申请单是否执行过自动二审, 0:未执行过, 1:已执行并通过 2: 已执行但未通过
     */
    private int autoSecondAudit;

    private String language;

    private String country;

    public RefundTktDO getRefundTkt() {
        return refundTkt;
    }

    public void setRefundTkt(RefundTktDO refundTkt) {
        this.refundTkt = refundTkt;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

//	public boolean isPartailRefund() {
//        return refundTkt.isPartailRefund();
//    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

//    public String getPayAmount() {
////        //默认支付金额为票面销售价   在refundtkt表生成的时候已减去促销金额
////        BigDecimal payAmount = this.refundTkt.getTktAmt();
////        /*
////        BigDecimal promoteAmt = this.refundTkt.getPromoteAmt();
////        //如果不是积分票, 而且存在促销金额,客票销售金额减去促销金额
////        if (this.pointsType == null && promoteAmt != null) {
////            payAmount = payAmount.subtract(promoteAmt);
////        }
////        */
////        return payAmount.toString();
////    }

    //    public void setPayAmount(String payAmount) {
//        this.payAmount = payAmount;
//    }
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }

    public String getClaimerId() {
        return claimerId;
    }

    public void setClaimerId(String claimerId) {
        this.claimerId = claimerId;
    }

    public String getClaimerName() {
        return claimerName;
    }

    public void setClaimerName(String claimerName) {
        this.claimerName = claimerName;
    }

    public String getClaimerType() {
        return claimerType;
    }

    public void setClaimerType(String claimerType) {
        this.claimerType = claimerType;
    }

    public String getClaimerPhone() {
        return claimerPhone;
    }

    public void setClaimerPhone(String claimerPhone) {
        this.claimerPhone = claimerPhone;
    }

    public String getClaimerEmail() {
        return claimerEmail;
    }

    public void setClaimerEmail(String claimerEmail) {
        this.claimerEmail = claimerEmail;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public Date getCreatDate() {
        return creatDate;
    }

    public void setCreatDate(Date creatDate) {
        this.creatDate = creatDate;
    }

    public Date getPnrCancelDate() {
        return pnrCancelDate;
    }

    public void setPnrCancelDate(Date pnrCancelDate) {
        this.pnrCancelDate = pnrCancelDate;
    }

    public Date getUpdatDate() {
        return updatDate;
    }

    public void setUpdatDate(Date updatDate) {
        this.updatDate = updatDate;
    }

    public String getClaimSource() {
        return claimSource;
    }

    public void setClaimSource(String claimSource) {
        this.claimSource = claimSource;
    }

    public String getChannelNo() {
        return channelNo;
    }

    public void setChannelNo(String channelNo) {
        this.channelNo = channelNo;
    }

    public int getIsVoluntary() {
        return isVoluntary;
    }

    public void setIsVoluntary(int isVoluntary) {
        this.isVoluntary = isVoluntary;
    }

    public String getClaimReason() {
        return claimReason;
    }

    public void setClaimReason(String claimReason) {
        this.claimReason = claimReason;
    }

    public String getClaimDesc() {
        return claimDesc;
    }

    public void setClaimDesc(String claimDesc) {
        this.claimDesc = claimDesc;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusName() {
        return statusName;
    }

    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }

    public String getActionTip() {
        return actionTip;
    }

    public void setActionTip(String actionTip) {
        this.actionTip = actionTip;
    }

    public BigDecimal getRefundAmount() {
        return refundAmount;
    }

    public void setRefundAmount(BigDecimal refundAmount) {
        this.refundAmount = refundAmount;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public BigDecimal getRefundFee() {
        return refundFee;
    }

    public void setRefundFee(BigDecimal refundFee) {
        this.refundFee = refundFee;
    }

    public Long getRefundPoints() {
        return refundPoints;
    }

    public void setRefundPoints(Long refundPoints) {
        this.refundPoints = refundPoints;
    }

    public String getPointsType() {
        return pointsType;
    }

    public void setPointsType(String pointsType) {
        this.pointsType = pointsType;
    }

    public List<Long> getIds() {
        return ids;
    }

    public void setIds(List<Long> ids) {
        this.ids = ids;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public String[] getStatuses() {
        return statuses;
    }

    public void setStatuses(String[] statuses) {
        this.statuses = statuses;
    }

    public int getAutoFirstAudit() {
        return autoFirstAudit;
    }

    public void setAutoFirstAudit(int autoFirstAudit) {
        this.autoFirstAudit = autoFirstAudit;
    }

    public int getAutoSecondAudit() {
        return autoSecondAudit;
    }

    public void setAutoSecondAudit(int autoSecondAudit) {
        this.autoSecondAudit = autoSecondAudit;
    }

    public String getPayChannel() {
        return payChannel;
    }

    public void setPayChannel(String payChannel) {
        this.payChannel = payChannel;
    }

}
